Repository navigation
Add consent-independent device attribute sync (Android/iOS parity) - #155
Merged
Merged
Conversation
- Use the nested synced store with deep-merge commits and order-insensitive array comparison - Dedup against the synced store first, and against owner values only when collect consent is y; treat an unregistered Consent extension as y - Copy values that match an owner into the synced store - Release the active request on any matching Edge result, matched by parentID or requestEventId - Publish the Device Attributes Sync Result event from Edge Identity on success and on failure - Publish profileAttributes in the standard shared state and keep XDM as released - Restore main's startup gating, timezone handler and test app; remove the unused migration and DeviceAttributes API
sagar-sharma-adobe
requested review from
akhiljain1907,
ishwetansh,
namArora3112 and
navratan-soni
October 21, 2026 09:59
6 of 10 tasks
namArora3112
approved these changes
Oct 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds consent-independent device attribute sync to Edge Identity Android, in parity with Edge Identity iOS. This branch includes the work from #150 plus the review, parity and stability changes made on top of it.
API
Identity.updateDeviceAttributesBypassConsent(Map<String, Object>)is the only new public API.Deduplication (
edgeidentity.optimizeOperationalProfileDataSync, default true)timezoneandtokens.pushNotificationare deduplicated and stored. All other values are always sent and never stored.y, a value that matches its owner (Messaging for the push token,profileAttributesfor timezone) is also skipped and saved as confirmed. If the Consent extension isn't registered, consent counts asy, the same as Edge.Queue and results
edgeIdentity/responseContent) with{status, reason, attributes}.""on success.unchanged,identityReset,missingAppIdentifierorinternalError.unknown.messaging/responseContent,{tokens}) is sent for Messaging.Shared state
profileAttributes(consent-path timezone) is unchanged from 3.1.0.Crash safety
Reverted from #150 to match main
DeviceAttributesclass and overloadreadyForEventbootup bypassAttributeHandlerrename on the consent path"deviceAttributes"migrationRelated Issue
MOB-25063. Builds on #150. iOS counterpart: adobe/aepsdk-edgeidentity-ios#154.
Motivation and Context
Timezone and push tokens are operational data that must reach the profile even without collect consent. The device attributes path sends them through Edge's dedicated endpoint (adobe/aepsdk-edge-android#205), deduplicates the known values so unchanged data isn't resent, and reports every outcome so callers and Messaging can react.
Known limitation: Messaging Android doesn't forward rotated tokens, so apps must call the API again when the push token changes (
onNewToken).How Has This Been Tested?
./code/gradlew -p code/edgeidentity testPhoneDebugUnitTest: 345 tests, 0 failures.spotlessCheck,checkstyleandcompilePhoneDebugAndroidTestJavaWithJavacpass (JDK 17).Types of changes
Checklist: